package com.hanbang.chu_xing_gao_zhao.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;


/**
 * 各种时间 的转换与得利当前时间，和得到年月日
 * 
 * @author yang
 * 
 */
public class TimeTools {
	
	/**
	 * date类型转换为String类型 formatType格式为yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日 HH时mm分ss秒
	 * data Date类型的时间
	 * 
	 * @param data
	 * @param formatType
	 * @return
	 */
	public static String dateToString(Date data, String formatType) {
		return new SimpleDateFormat(formatType).format(data);
	}

	/**
	 * long类型转换为String类型 currentTime要转换的long类型的时间 formatType要转换的string类型的时间格式
	 * 
	 * @param currentTime
	 * @param formatType
	 * @return
	 * @throws ParseException
	 */
	public static String converLongToString(long currentTime, String formatType) throws ParseException {
		Date date = converLongToDate(currentTime, formatType); // long类型转成Date类型
		String strTime = dateToString(date, formatType); // date类型转成String
		return strTime;
	}

	/**
	 * string类型转换为date类型 strTime要转换的string类型的时间，formatType要转换的格式yyyy-MM-dd
	 * HH:mm:ss//yyyy年MM月dd日HH时mm分ss秒， strTime的时间格式必须要与formatType的时间格式相同
	 * 
	 * @param strTime
	 * @param formatType
	 * @return
	 * @throws ParseException
	 */
	public static Date converStringToDate(String strTime, String formatType) throws ParseException {
		SimpleDateFormat formatter = new SimpleDateFormat(formatType);
		Date date = null;
		date = formatter.parse(strTime);
		return date;
	}
	
	/**
	 * 指定时间格式，并把对应的时间转换为一个long 值
	 * @param strTime
	 * @param formatType
	 * @return
	 * @throws ParseException
	 */
	public static long converStringToDateLong(String strTime, String formatType) throws ParseException {
		SimpleDateFormat formatter = new SimpleDateFormat(formatType);
		Date date = null;
		date = formatter.parse(strTime);
		return date.getTime();
	}

	/**
	 * long转换为Date类型 currentTime要转换的long类型的时间 formatType要转换的时间格式yyyy-MM-dd
	 * HH:mm:ss//yyyy年MM月dd日 HH时mm分ss秒
	 * 
	 * @param currentTime
	 * @param formatType
	 * @return
	 * @throws ParseException
	 */
	public static Date converLongToDate(long currentTime, String formatType) throws ParseException {
		Date dateOld = new Date(currentTime); // 根据long类型的毫秒数生命一个date类型的时间
		String sDateTime = dateToString(dateOld, formatType); // 把date类型的时间转换为string
		Date date = converStringToDate(sDateTime, formatType); // 把String类型转换为Date类型
		return date;
	}

	/**
	 * string类型转换为long类型 strTime要转换的String类型的时间 formatType时间格式
	 * strTime的时间格式和formatType的时间格式必须相同
	 * 
	 * @param strTime
	 * @param formatType
	 * @return
	 * @throws ParseException
	 */
	public static long converStringToLong(String strTime, String formatType) throws ParseException {
		Date date = converStringToDate(strTime, formatType); // String类型转成date类型
		if (date == null) {
			return 0;
		} else {
			long currentTime = converDateToLong(date); // date类型转成long类型
			return currentTime;
		}
	}

	/**
	 * date类型转换为long类型 date要转换的date类型的时间
	 * 
	 * @param date
	 * @return
	 */
	public static long converDateToLong(Date date) {
		return date.getTime();
	}

	/**
	 * 得到当前年
	 * 
	 * @return
	 */
	public static int getYear() {
		Calendar calendar = Calendar.getInstance();
		int year = calendar.get(Calendar.YEAR);

		return year;

	}

	/**
	 * 得到当前月
	 * 
	 * @return
	 */
	public static int getMonth() {
		Calendar calendar = Calendar.getInstance();
		int month = calendar.get(Calendar.MONTH);
		return month+1;

	}

	/**
	 * 得到当前日
	 * 
	 * @return
	 */
	public static int getDay() {
		Calendar calendar = Calendar.getInstance();
		int day = calendar.get(Calendar.DAY_OF_MONTH);
		return day;

	}

	/**
	 * 得到当前的年月日 格式为：yyyy-mm-dd
	 * 
	 * @return
	 */
	public static String getCalender() {
		Calendar calendar = Calendar.getInstance();
		int year = calendar.get(Calendar.YEAR);
		int myonthy = calendar.get(Calendar.MONTH);
		int day = calendar.get(Calendar.DAY_OF_MONTH);
		String myCaender = year + "-" + (myonthy + 1) + "-" + day;
		return myCaender;

	}

	/**
	 * 得到当前的年月日 格式为：yyyy年mm月dd日
	 * 
	 * @return
	 */
	public static String getCalenderB() {
		Calendar calendar = Calendar.getInstance();
		int year = calendar.get(Calendar.YEAR);
		int myonthy = calendar.get(Calendar.MONTH);
		int day = calendar.get(Calendar.DAY_OF_MONTH);
		String myCaender = year + "年" + (myonthy + 1) + "月" + day + "日";
		return myCaender;

	}

	/**
	 * 获取系统时间，格式为：yyyy-MM-dd HH:mm:ss
	 * 
	 * @return
	 */
	public static String systemTime() {
		// 获取当前时间
		Date date = new Date();
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		// 打印的是一个指定格式的日期
		String systemTime = df.format(date);

		return systemTime;

	}

	/**
	 * 获取系统指定格式的系统时间，如：yyyy-MM-dd HH:mm:ss; 如：yyyy-MM-dd
	 * 
	 * @return
	 */
	public static String getCustomSystemTime(String format) {
		// 获取当前时间
		Date date = new Date();
		SimpleDateFormat df = new SimpleDateFormat(format);
		// 打印的是一个指定格式的日期
		String systemTime = df.format(date);
		return systemTime;

	}
	
	/**
	 * 获取系统指定格式的系统时间，是一个Date的Longw值
	 * 
	 * @return
	 */
	public static long getDateLong() {
		// 获取当前时间
		Date date = new Date();
		long calendar=date.getTime();
		
		return calendar;

	}
	
	
	
	
	
	

}
